package q665_checkPossibility;

public class Solution {
    /*
    如果希望一个数组都为递增数组
    那么可以依次考虑相邻两个数的大小情况，如果出现前一个数大于后一个数字的时候
    我们使用一个count来计数，此时count++
    修改 nums[i] 为 nums[i+1] 后，
    还需要保证 nums[i−1]≤nums[i] 仍然成立，即 nums[i−1]≤nums[i+1]，
    若该不等式不成立则整个数组必然不是非递减的，则需要修改nums[i+1] 为 nums[i]

     */
    public boolean checkPossibility(int[] nums) {
        int n = nums.length, cnt = 0;
        for (int i = 0; i < n - 1; ++i) {

            if (nums[i] > nums[i + 1]) {
                cnt++;
                if (cnt > 1) return false;

                if (i > 0 && nums[i + 1] < nums[i - 1]) nums[i + 1] = nums[i];
            }
        }
        return true;
    }
}
